/**
 * 淘宝爬虫任务
 */
module.exports = {
    // 任务名称
    name: '淘宝',
    
    // 是否启用此任务
    enabled: true,
    
    // 目标网站URL
    url: 'https://www.taobao.com',
    
    // 搜索配置（可选）
    search: {
        url: 'https://s.taobao.com/search',
        selectors: {
            searchInput: '#q',
            searchButton: '.btn-search',
        }
    },
    
    // 页面元素选择器（可选）
    selectors: {
        productList: '.item',
        productTitle: '.title',
        productPrice: '.price',
        productImage: '.pic img',
        productLink: '.title a'
    },
    
    // 爬取选项
    crawlOptions: {
        maxPages: 5,
        delayBetweenPages: 2000,
        waitForSelector: '.item',
        timeout: 30000
    },
    
    /**
     * 自定义爬取逻辑
     * @param {Page} page - Playwright页面对象
     * @param {EcommerceCrawler} crawler - 爬虫实例
     * @returns {Object} 爬取结果
     */
    async customCrawl(page, crawler) {
        console.log(`🎯 正在爬取【${this.name}】...`);
        
        try {
            // 打开淘宝首页
            console.log(`   正在打开页面: ${this.url}`);
            await page.goto(this.url, {
                waitUntil: 'networkidle',
                timeout: this.crawlOptions.timeout
            });
            
            // 等待页面加载
            await page.waitForTimeout(3000);
            
            // 获取页面信息
            const title = await page.title();
            const url = page.url();
            
            console.log(`   页面标题: ${title}`);
            console.log(`   页面URL: ${url}`);
            
            // 提取页面上的数据
            const pageData = await page.evaluate(() => {
                const data = {};
                
                // 提取所有链接
                const links = Array.from(document.querySelectorAll('a'))
                    .slice(0, 20)
                    .map(a => ({
                        text: a.textContent?.trim(),
                        href: a.href
                    }))
                    .filter(item => item.text && item.text.length > 0 && item.text.length < 50);
                
                // 提取所有图片
                const images = Array.from(document.querySelectorAll('img'))
                    .slice(0, 10)
                    .map(img => ({
                        alt: img.alt,
                        src: img.src
                    }))
                    .filter(item => item.src);
                
                // 提取所有可见文本
                const textElements = Array.from(document.querySelectorAll('h1, h2, h3, h4, p, span'))
                    .slice(0, 15)
                    .map(el => el.textContent?.trim())
                    .filter(text => text && text.length > 0 && text.length < 100);
                
                return {
                    links: links,
                    images: images,
                    textElements: textElements
                };
            }).catch(() => ({ links: [], images: [], textElements: [] }));
            
            console.log(`   找到 ${pageData.links.length} 个链接`);
            console.log(`   找到 ${pageData.images.length} 个图片`);
            console.log(`   找到 ${pageData.textElements.length} 个文本元素`);
            
            // 点击文字为"电脑"的链接进行跳转
            let clickResult = null;
            try {
                // 查找所有链接，找到文字包含"电脑"的链接
                console.log(`   正在查找包含"电脑"的链接...`);
                
                const targetLink = await page.evaluateHandle(() => {
                    const links = Array.from(document.querySelectorAll('a[href]'));
                    return links.find(link => {
                        const text = link.textContent?.trim() || '';
                        return text.includes('电脑');
                    });
                });
                
                // 检查是否找到目标链接
                const linkExists = await targetLink.evaluate(node => node !== undefined);
                
                if (linkExists) {
                    const linkText = await targetLink.evaluate(node => node?.textContent?.trim());
                    const linkHref = await targetLink.evaluate(node => node?.href);
                    
                    console.log(`   ✅ 找到目标链接: "${linkText}" -> ${linkHref}`);
                    console.log(`   准备点击...`);
                    
                    // 点击链接
                    await targetLink.evaluate(node => node?.click());
                    
                    // 等待导航完成
                    await page.waitForLoadState('networkidle', { timeout: 15000 }).catch(() => {
                        console.log(`   ⚠️  等待页面加载超时，继续...`);
                    });
                    await page.waitForTimeout(3000);
                    
                    // 获取跳转后的页面信息
                    const newUrl = page.url();
                    const newTitle = await page.title();
                    
                    console.log(`   ✅ 跳转成功！`);
                    console.log(`   新页面标题: ${newTitle}`);
                    console.log(`   新页面URL: ${newUrl}`);
                    
                    clickResult = {
                        success: true,
                        clickedLink: linkText,
                        clickedHref: linkHref,
                        newUrl: newUrl,
                        newTitle: newTitle
                    };
                } else {
                    console.log(`   ⚠️  未找到包含"电脑"的链接`);
                    
                    // 尝试列出一些可用的链接供调试
                    const availableLinks = await page.$$eval('a', (links) => {
                        return links.slice(0, 10).map(a => a.textContent?.trim()).filter(t => t && t.length > 0);
                    }).catch(() => []);
                    
                    console.log(`   可用的链接示例: ${availableLinks.join(', ')}`);
                    clickResult = { success: false, reason: '未找到包含"电脑"的链接', availableLinks };
                }
            } catch (error) {
                console.log(`   ⚠️  点击跳转失败: ${error.message}`);
                clickResult = { success: false, error: error.message };
            }
            
            // 等待一段时间，方便调试（不立即关闭网页）
            console.log(`   ⏸️  等待 30 秒用于调试，页面将保持打开状态...`);
            await page.waitForTimeout(30000); // 等待 30 秒
            console.log(`   ✅ 调试等待结束`);
            
            // 返回爬取结果
            return {
                success: true,
                url: url,
                title: title,
                timestamp: new Date().toISOString(),
                data: {
                    pageType: 'homepage',
                    platform: 'Taobao',
                    country: 'China',
                    language: 'zh-CN',
                    // 页面数据
                    pageData: {
                        links: pageData.links,
                        images: pageData.images,
                        textElements: pageData.textElements
                    },
                    // 点击跳转结果
                    clickResult: clickResult
                }
            };
        } catch (error) {
            console.error(`❌ 爬取【${this.name}】失败:`, error.message);
            return {
                success: false,
                error: error.message,
                timestamp: new Date().toISOString()
            };
        }
    }
};

